package com.atguigu.utils;

import com.atguigu.pojo.Food;
import org.apache.commons.beanutils.BeanUtils;

import java.io.UnsupportedEncodingException;
import java.util.Map;

public class WebUtils {
    // BeanUtils.populate(Object obj, Map properties); 因此改为传Map，而不传HttpServletRequest
//    public static void copyParamToBean(HttpServletRequest req, T bean){

    /**
     * 传入一个对象的map，再传入一个对象的javabean
     *
     * @param value
     * @param bean
     * @param <T>
     * @return
     */
    public static <T> T copyParamToBean(Map value, T bean) {  // 使用泛型，不用进行类型转换
        try {
            /**
             * 把所有请求的参数注入到user对象中
             * req.getParameterMap()得到所有表单提交的数据（键值对的形式）
             * 为什么可以只通过一个方法就把值注入到user类中，原因：底层代码实现是通过反射获取bean类中的set...()方法,利用set...()方法
             * 将数据写入到javabean中，因此如果改了set方法名，就会写不进去了
             */
            BeanUtils.populate(bean, value);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return bean;
    }

    /**
     * 将字符串转换为Int类型的数据
     *
     * @param stringInt
     * @return
     */
    public static int parseInt(String stringInt) {
        try {
            return Integer.parseInt(stringInt);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return 0;
    }

    public static Food EncodingChange(Map<String, String[]> value) throws UnsupportedEncodingException {
        Food food = new Food();
        for (Map.Entry<String, String[]> map : value.entrySet()) {
            String key = map.getKey();
            String[] keyValue = map.getValue();
            if (key.equals("food_name")) {
                food.setFood_name(new String(keyValue[0].getBytes("ISO-8859-1"), "UTF-8"));
            }
            if (key.equals("price")) {
                food.setPrice(Integer.valueOf(keyValue[0]));
            }
            if (key.equals("food_id")) {
                food.setFood_id(Integer.valueOf(keyValue[0]));
            }
        }
        return food;
    }
}
